# -*- coding: utf-8 -*-

from django.db import models

class Entidad(models.Model):

    codigo = models.CharField(max_length=2, primary_key=True)        
    nombre = models.CharField(max_length=50,unique=True,verbose_name='Nombre')
    
    def __unicode__(self):
        return self.nombre
    
    
class Municipio(models.Model):
    
    codigo = models.CharField(max_length=4, primary_key=True)
    nombre = models.CharField(max_length=50,verbose_name='Nombre')
    entidad = models.ForeignKey(Entidad,db_column='entidad_codigo')
    
    def __unicode__(self):
        return self.nombre
    
    class Meta:
        unique_together = [("nombre", "entidad")]


class Parroquia(models.Model):
    
    codigo = models.CharField(max_length=6, primary_key=True)
    nombre = models.CharField(max_length=80,verbose_name='Nombre')
    municipio = models.ForeignKey(Municipio, db_column='municipio_codigo') 
    
    def __unicode__(self):
        return self.nombre
    
    class Meta:
        unique_together = [("nombre", "municipio")]

class Modulo(models.Model):
    
    nombre = models.CharField(max_length=50,unique=True,verbose_name='Nombre')
    activo = models.BooleanField(default=True)
    
    def __unicode__(self):
        return self.nombre

class Profesion(models.Model):
    
    nombre = models.CharField(max_length=50,unique=True,verbose_name='Nombre')
    observaciones = models.CharField(max_length=255,null=True,verbose_name='Observaciones')
    
    def __unicode__(self):
        return self.nombre


class Turno(models.Model):
    
    nombre = models.CharField(max_length=50,unique=True,verbose_name='Nombre')
    hora_inicio = models.DateField()
    hora_fin = models.DateField()
    activo = models.BooleanField(default=True)
    
    def __unicode__(self):
        return self.nombre
    
    class Meta:
        unique_together = [("hora_inicio", "hora_fin")]


class Dia(models.Model):
    
    turno = models.ForeignKey(Turno)
    dia = models.CharField(max_length=9, unique=True, verbose_name='Día')
    activo = models.BooleanField(default=True)
    
    def __unicode__(self):
        return self.dia 

class Curso(models.Model):
    
    modulo = models.ForeignKey(Modulo)
    nombre = models.CharField(max_length=50,unique=True,verbose_name='Nombre')
    contenido = models.FileField(upload_to = 'contenido/%Y/%m/%d')
    activo = models.BooleanField(default=True)
    
    def __unicode__(self):
        return self.nombre
    
class Persona(models.Model):
 
    profesion = models.ForeignKey(Profesion)   
    parroquia = models.ForeignKey(Parroquia)
    
    nombre_1 = models.CharField(max_length=30,verbose_name='Primer nombre')
    nombre_2 = models.CharField(max_length=30,verbose_name='Segundo nombre')
    apellido_1 = models.CharField(max_length=30,verbose_name='Primer apellido')
    apellido_2 = models.CharField(max_length=30,verbose_name='Segundo apellido')
    nacionalidad = models.CharField(max_length=1, choices=((u'V',u'Venezolano'),(u'E','Extranjero')))
    cedula = models.CharField(max_length=8, unique=True, verbose_name=u'Cédula')
    telefono_1 = models.CharField(max_length=15,verbose_name='Teléfono')
    telefono_2 = models.CharField(max_length=15,null=True,verbose_name='Otro Teléfono')
    email = models.EmailField()
    direccion = models.TextField()


class Instructor(models.Model):
    
    persona = models.ForeignKey(Persona,unique=True)
    curriculum = models.FileField(upload_to = 'curriculum/%Y/%m/%d')
    url = models.FilePathField(max_length=100,verbose_name='url')
    curso = models.ManyToManyField(Curso, db_table = 'cursos_curso_instructor')
    dia = models.ManyToManyField(Dia, db_table = 'cursos_instructor_dia')


class Institucion(models.Model):
    
    nombre = models.CharField(max_length=50,unique=True)
    observaciones = models.TextField(null=True)
    activo = models.BooleanField(default=True)

class Tipo_participante(models.Model):
    
    tipo = models.CharField(max_length=50,unique=True,verbose_name='Tipo')
    
class Participante(models.Model):
    
    persona = models.ForeignKey(Persona,unique=True)
    institucion = models.ForeignKey(Institucion)
    tipo_participante = models.ForeignKey(Tipo_participante)

class Laboratorio(models.Model):
    
    institucion = models.ForeignKey(Institucion)
    nombre = models.CharField(max_length=50,unique=True)
    activo = models.BooleanField(default=True)

class Programacion(models.Model):
    
    instructor = models.ForeignKey(Instructor)
    laboratorio = models.ForeignKey(Laboratorio)
    curso = models.ForeignKey(Curso)
    fecha_inicio = models.DateField()
    fecha_fin = models.DateField()
    observaciones = models.TextField(null=True)
    codigo_acceso = models.CharField(max_length=20)
    estado_generar_planilla = models.CharField(max_length=1, choices=(('1','1'),('2','2'),('3','3'),('4','4'),('5','5'),('6','6')), default=1)
    estado_encuesta = models.BooleanField(default=False)
    estado_inscripcion = models.BooleanField(default=False) 


class Programacion_dia(models.Model):
    
    dia = models.ForeignKey(Dia)
    progamacion = models.ForeignKey(Programacion) 
    
    class Meta:
        unique_together = [("dia", "progamacion")]


class Programacion_participante(models.Model):
    
    participante = models.ForeignKey(Participante)
    programacion = models.ForeignKey(Programacion)
    
    inscrito = models.BooleanField(default=False)
    culmino = models.BooleanField(default=False)
    calificacion = models.DecimalField(max_digits=4, decimal_places=2)
    fecha_inscripcion = models.DateTimeField()

